package com.qpx.jxcmessage.topic;


import com.alibaba.fastjson.JSON;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.Map;

@RabbitListener(queues = "Topic-queue3")
@Component(value = "topic333")
@Slf4j
public class Consumer3 {


    @Autowired
    StringRedisTemplate stringRedisTemplate;
    @RabbitHandler
    public void getMessage(String msg, Channel channel, Message message) throws IOException {
              log.info("Topic-queue3--------------:" + msg);
              Map<String,String> m = JSON.parseObject(msg,Map.class);
              String s = m.get("id");
              if (stringRedisTemplate.opsForValue().setIfAbsent(s,m.get("message"))){
                  log.info("处理业务逻辑");
              }else {
                  log.info("重复消费拒绝处理");
              }

        //
//       try {
//           log.info("1711E-Q3--------------:" + message);
//           //处理业务逻辑 1000行代码
//           channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
//       }catch (Exception e){
//           e.printStackTrace();
//           log.info("消息出现异常。。。。进入队列重新发送.。。。。。。");
//           channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true);
//
//           if (message.getMessageProperties().getRedelivered()){
//               log.info("拒绝处理消息。。。。。");
//
//               channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
//           }else {
//               log.info("消息出现异常。。。。进入队列重新发送.。。。。。。");
//               channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true);
//           }
//       }finally {
//
//       }
    }
}
